package com.stdspringboot.interceptor;

import com.stdspringboot.entity.User;
import com.stdspringboot.util.Constant;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Repository;
import org.springframework.web.servlet.HandlerInterceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

//@Component 应用场景：当一个类，要由springboot同一管理创建
//和销毁，但是该类又不属于 controller、service、repository时
//就使用该注解
@Component
public class LoginInter implements HandlerInterceptor {

    //方法controller前，先经过该方法
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

        User user=(User)request.getSession().getAttribute(Constant.KEY_SESSION_USERINFO);
        //未登录
        if(user==null){
            //返回json字符串，比较麻烦，需要将java对象转成json字符串，还需要处理中文乱码
            //所以改用简单的方式，直接跳转 controller，由controller返回json
            request.getRequestDispatcher("/noLogin").forward(request,response);
            return false;
        }
        //校验登录通过
        return true;
    }
}
